package br.gov.mi.corporativo.dominio.boundary.rhmi.funcionariodocumento;

import java.util.Date;
import java.util.List;

import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.core.MediaType;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.context.support.SpringBeanAutowiringSupport;

import br.gov.mi.corporativo.dominio.entidade.rhmi.FuncionarioDocumento;


@Path("funcionariosdocumentos")
public class FuncionarioDocumentoRestAdapter extends SpringBeanAutowiringSupport {
	
	@Autowired
	private FuncionarioDocumentoEndPoint service;
	
	@GET
	@Produces({MediaType.APPLICATION_JSON})
	public Iterable<FuncionarioDocumento> recuperarTodos(){
		return service.recuperarTodos();
	}
	
	@GET
	@Path("/id/{idFuncionarioDocumento}")
	@Produces({MediaType.APPLICATION_JSON})
	public FuncionarioDocumento recuperarPorIdFuncionarioDocumento(@PathParam("idFuncionarioDocumento")Long idFuncionarioDocumento){
		return service.recuperarPorIdFuncionarioDocumento(idFuncionarioDocumento);
	}
	
	@GET
	@Path("/funcionario/{funcionario}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<FuncionarioDocumento> recuperarPorFuncionario(@PathParam("funcionario")Long funcionario){
		return service.recuperarPorFuncionario(funcionario);
	}
	
	@GET
	@Path("/tipodocumento/{idTipoDocumento}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<FuncionarioDocumento> recuperarPorIdTipoDocumento(@PathParam("idTipoDocumento")Long idTipoDocumento){
		return service.recuperarPorIdTipoDocumento(idTipoDocumento);
	}
	
	@GET
	@Path("/uf/{idUf}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<FuncionarioDocumento> recuperarPorIdUf(@PathParam("idUf")Long idUf){
		return service.recuperarPorIdUf(idUf);
	}
	
	@GET
	@Path("/municipio/{idMunicipio}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<FuncionarioDocumento> recuperarPorIdMunicipio(@PathParam("idMunicipio")Long idMunicipio){
		return service.recuperarPorIdMunicipio(idMunicipio);
	}
	
	@GET
	@Path("/documento/{nrDocumento}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<FuncionarioDocumento> recuperarPorNrDocumento(@PathParam("nrDocumento")String nrDocumento){
		return service.recuperarPorNrDocumento(nrDocumento);
	}
	
	@GET
	@Path("/secao/{nrSecao}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<FuncionarioDocumento> recuperarPorNrSecao(@PathParam("nrSecao")Long nrSecao){
		return service.recuperarPorNrSecao(nrSecao);
	}
	
	@GET
	@Path("/zona/{nrZona}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<FuncionarioDocumento> recuperarPorNrZona(@PathParam("nrZona")Long nrZona){
		return service.recuperarPorNrZona(nrZona);
	}
	
	@GET
	@Path("/dataemissao/{dtEmissao}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<FuncionarioDocumento> recuperarPorDtEmissao(@PathParam("dtEmissao")Date dtEmissao){
		return service.recuperarPorDtEmissao(dtEmissao);
	}
	
	@GET
	@Path("/datavalidade/{dtValidade}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<FuncionarioDocumento> recuperarPorDtValidade(@PathParam("dtValidade")Date dtValidade){
		return service.recuperarPorDtValidade(dtValidade);
	}
	
	@GET
	@Path("/registro/{stRegistro}")
	@Produces({MediaType.APPLICATION_JSON})
	public List<FuncionarioDocumento> recuperarPorStRegistro(@PathParam("stRegistro")String stRegistro){
		return service.recuperarPorStRegistro(stRegistro);
	}
	
}
